package field

import "gitee.com/yanwc/net/utils"

// field-09

type (
	StatusBit32    U4    // 32bit状态位
	StatusBit32Raw U4Raw // 32bit状态位
)

func (sb32 StatusBit32) Raw() (out StatusBit32Raw) {
	copy(out[:], utils.NumberToBytesWithBigEndian(sb32))
	return
}

func (sb32 StatusBit32Raw) Type() StatusBit32 {
	return utils.BytesToNumber[StatusBit32](sb32[:])
}

func (sb32 StatusBit32Raw) Slice() []byte {
	return sb32[:]
}

func (sb32 StatusBit32) Status(s StatusBit32) bool {
	return sb32&s == s
}

func (sb32 StatusBit32) Set(s StatusBit32) StatusBit32 {
	return sb32 | s
}

const (
	Sb32_20_SDKActivateStatus            StatusBit32 = 0b_0000_0000_0001_0000_0000_0000_0000_0000 // Bit20 惯导SDK激活状态 1：已激活，0：未激活
	Sb32_19_CameraConnected              StatusBit32 = 0b_0000_0000_0000_1000_0000_0000_0000_0000 // Bit19 相机连接状态 1：已连接，0：未连接
	Sb32_18_IntelligenceHelmetLockStatus StatusBit32 = 0b_0000_0000_0000_0100_0000_0000_0000_0000 // Bit18 智能头盔锁逻辑状态 1：上锁，0：解锁
	Sb32_17_HelmetBatteryChangeStatus    StatusBit32 = 0b_0000_0000_0000_0010_0000_0000_0000_0000 // Bit17:智能感应头盔电池更换状态 1：需要更换，0：不需要更换
	Sb32_16_KickStandSlotStatus          StatusBit32 = 0b_0000_0000_0000_0001_0000_0000_0000_0000 // Bit16:边撑状态  1：不在位，0：在位
	Sb32_15_G_SensorStatus               StatusBit32 = 0b_0000_0000_0000_0000_1000_0000_0000_0000 // Bit15:重力感应状态  1：超载，0：正常
	Sb32_14_PowerSwitchStatus            StatusBit32 = 0b_0000_0000_0000_0000_0100_0000_0000_0000 // Bit14：电门逻辑状态（头盔是否佩戴引起的电门开关该值不变化） 1：电门开启，0：电门关闭
	Sb32_13_12_00_IsHasHelmetStatus      StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0000_0000 // 头盔是否佩戴 Bit13-Bit12  00：未检测到头盔锁
	Sb32_13_12_01_WoreHelmetStatus       StatusBit32 = 0b_0000_0000_0000_0000_0001_0000_0000_0000 // 头盔是否佩戴 Bit13-Bit12  01：佩戴头盔
	Sb32_13_12_10_NotWornHelmetStatus    StatusBit32 = 0b_0000_0000_0000_0000_0010_0000_0000_0000 // 头盔是否佩戴 Bit13-Bit12  10：没有佩戴
	Sb32_11_HelmetLockSwitchStatus       StatusBit32 = 0b_0000_0000_0000_0000_0000_1000_0000_0000 // Bit11:头盔锁开关 1：头盔锁开，0：头盔锁关
	Sb32_10_HelmetSlotStatus             StatusBit32 = 0b_0000_0000_0000_0000_0000_0100_0000_0000 // Bit10:头盔是否在位  1：头盔在位，0：头盔离位
	Sb32_9_BatteryStatus                 StatusBit32 = 0b_0000_0000_0000_0000_0000_0010_0000_0000 // Bit9：电池状态 1：电池接入，0：电池移除
	Sb32_8_LocateMode                    StatusBit32 = 0b_0000_0000_0000_0000_0000_0001_0000_0000 // Bit8：定位方式 1：GPS定位，0：基站定位
	Sb32_7_BikeMoveOrNotStatus           StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_1000_0000 // Bit7：车辆是否移动  1：车辆移动，0：车辆静止
	Sb32_6_BackWheelRotatingStatus       StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0100_0000 // Bit6：后轮是否转动 1：后轮转动，0：后轮静止
	Sb32_5_BatteryCompartmentStatus      StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0010_0000 // Bit5：电池仓是否开启 1：电池仓开启，0：电池仓关闭
	Sb32_4_HeadlampStatus                StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0001_0000 // Bit4：照明灯是否开启 1：照明灯开启，0：照明灯关闭
	Sb32_3_BackseatLockStatus            StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0000_1000 // Bit3：后座锁是否开启 1：后座锁开启，0：后座锁关闭
	Sb32_2_BackWheelLockStatus           StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0000_0100 // Bit2：后轮锁是否开启 1：后轮锁开启，0：后轮锁关闭
	Sb32_1_DefendStatus                  StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0000_0010 // Bit1：防盗是否开启 1：防盗开启，0：防盗关闭
	Sb32_0_PowerStatus                   StatusBit32 = 0b_0000_0000_0000_0000_0000_0000_0000_0001 // Bit0：电门是否开启 1：电门开启，0：电门关闭
)
